A playlist contains data related to the sequencing of video playback with advertisements. For example, advertisements may be interspersed between segments of the video. In this scenario, the advertisements and video segments are rendered sequentially, meaning a video segment is rendered, then an advertisement is rendered, then another video segment is rendered, etc. In another scenario, the advertisements and video segments are rendered in parallel. For example, while the video segment is rendered in a video rendering region in a graphical user interface, a banner advertisement may be rendered in a banner rendering region in the graphical user interface. At the same time, a logo may be rendered in a logo rendering region in the graphical user interface. Components of the playlist, such as videos, banners, advertisements, etc., may be nested in various sequential/parallel combinations. For example, three components (i.e., a video segment is rendered in a video rendering region in a graphical user interface, a banner advertisement rendered in a banner rendering region in the graphical user interface, and a logo rendered in a logo rendering region) may be rendered in parallel. Nested within this parallel execution, the logo may actually be multiple static images rendered sequentially (for example, a different static image is rendered every 2 seconds) such that the logo appears to ‘blink’ or ‘flash’.
A playlist execution engine is the engine that executes such a playlist to ensure the desired viewing experience for the end user. The playlist execution engine executes all the components of the playlist in the right order. The job of the playlist execution engine is to ensure that correct items are played back at the correct time in the correct regions. Typically, a playlist file, such as an eXtensible Markup Language (XML) file, is fed into a playlist execution engine that processes each element (i.e., a video segment, banner, logo, advertisement, etc.).